<?php
/**
 * Класс Controller_Ajax_Product отвечает за обработку ajax-запросов, связанных с товарами
 * @author Mike
 */
class Controller_Ajax_Product extends Controller_Ajax {
	
	public function actionSwitch() {
		switch ($this->arrRequest[2]) {
			case 'selections-adding' :
				if(!User_Seance::isAdmin()) throw new Exception('', 403);
				$this->actionAddProductInSelection();
				break;
			case 'selections-deleting' :
				if(!User_Seance::isAdmin()) throw new Exception('', 403);
				$this->actionDelProductFromSelection();
				break;
			default:
				throw new Exception('', 404);
				break;
		}
	}
	
	/**
	 * Добавление товара в подборку
	 */
	private function actionAddProductInSelection() {
		$objDB = Service_Database::instanse();
		$productId = Service_Escape::requestDataInt('ID_product');
		$selectionId = Service_Escape::requestDataInt('ID_selection');
		
		if (!$productId || !$selectionId) return $this->makeStandardError('Переданы не все данные');
		
		$objProduct = new Product($productId);
		if(!$objProduct->id) return $this->makeStandardError('Передан неверный id товара');
		
		$objSelection = new Selection($selectionId);
		if(!$objSelection->id) return $this->makeStandardError('Передан неверный id');
		
		$stmt = "INSERT IGNORE INTO `product_selection`(`ID_product`, `ID_selection`) VALUES('" . $objProduct->id . "', '" . $objSelection->id . "')";
		$success = $objDB->query($stmt);
		
		if($success) $this->arrReturn = array('result' => 'OK', 'productData' => array('id' => $objProduct->id, 'name' => $objProduct->getField('product_name')));
		else return $this->makeStandardError('Неизвестная ошибка');
	}
	
	/**
	 * Удаление продукта из подборки
	 */
	private function actionDelProductFromSelection() {
		$objDB = Service_Database::instanse();
		$productId = Service_Escape::requestDataInt('ID_product');
		$selectionId = Service_Escape::requestDataInt('ID_selection');
	
		if (!$productId || !$selectionId) return $this->makeStandardError('Переданы не все данные');
	
		$objProduct = new Product($productId);
		if(!$objProduct->id) return $this->makeStandardError('Передан неверный id товара');
	
		$objSelection = new Selection($selectionId);
		if(!$objSelection->id) return $this->makeStandardError('Передан неверный id');
		
		$stmt = "DELETE FROM `product_selection` 
				WHERE `product_selection`.`ID_product` = '" . $objProduct->id . "' AND `product_selection`.`ID_selection` = '" . $objSelection->id . "'";
		$success = $objDB->query($stmt);
	
		if($success) $this->arrReturn = array('result' => 'OK');
		else return $this->makeStandardError('Неизвестная ошибка');
	}
}
